package com.duobao.server;

import java.util.Vector;

import com.duobao.wuping.*;
public class Map implements Runnable
{
    private int MapID;
    private String MapName;//地图名字
    private int FuncIds[];//功能编号
    private boolean massacre;//是否可以杀戮
    private String describe;//地图描述
    private Vector<NPC> npcs;//地图上的npc
    private int direction[];//行走方向
    private Vector<Equip> equips;//地图上的物品
    public Map(int id,String name,int funcIds[],boolean massacre,String describe,int direction[] )
    {
        this.MapID=id;
        this.MapName = name;
        this.FuncIds=funcIds;
        this.massacre = massacre;
        this.describe = describe;
        this.npcs = new Vector<NPC>();
        this.direction = direction;
        this.equips = new Vector<Equip>();
        if(this.MapID==11)
        {
            for(int j=0;j<1;j++)
            {

                this.equips.add(new Gangdao(true));

            }
        }

    }

    public boolean isMassacre() {
        return massacre;
    }

    public void setMassacre(boolean massacre) {
        this.massacre = massacre;
    }

    public int[] getFuncId() {
        return FuncIds;
    }
    public void setHuobi(Equip huobi)
    {
        Equip Zb = null;
        boolean b=false;
        for(int i=0;i<this.equips.size();i++)
        {
            Equip e = this.equips.get(i);
            if(e.getCategory()==huobi.getCategory())
            {
                Zb = e;
                b=true;
            }
        }
        if(b)
        {
            if(Zb.getCategory()==10)
            {
                Zb.setJZH(Zb.getJZH()+huobi.getJZH());
                Zb.setFZ(Zb.getJZH()/10);
            }
            else if(Zb.getCategory()==11)
            {
                Zb.setJZB(Zb.getJZB()+huobi.getJZB());
                Zb.setFZ(Zb.getJZB()/10);
            }else if(Zb.getCategory()==12)
            {
                Zb.setJZT(Zb.getJZT()+huobi.getJZT());
                Zb.setFZ(Zb.getJZT()/10);
            }
        }else
        {
            this.equips.add(huobi);
        }
    }
    public NPC getNPC(int id)
    {
        NPC npc = null;
        for(int i=0;i<this.npcs.size();i++)
        {
            NPC n = this.npcs.get(i);
            if(n.getId()==id)
            {
                npc = n ;
                break;
            }
        }
        return npc;
    }
    public Equip getEquip(String name,int id)
    {
        Equip Zb = null;
        int i;
        if(id>this.equips.size())
        {
            i=this.equips.size();
        }else{
            i=id;
        }
        for(;i>=0;i--)
        {
            Equip e = this.equips.get(i);
            if(e.getMsName().equals(name))
            {
                Zb = e;
                break;
            }
        }
        return Zb;
    }
    public NPC getNPC(String name)
    {
        NPC npc=null;
        for(int i=0;i<this.npcs.size();i++)
        {
            NPC n = this.npcs.get(i);
            if(n.getName().equals(name))
            {
                npc = n;
                break;
            }
        }
        return npc;
    }
    public NPC getNPC(String name,int index)
    {
        NPC npc=null;
        for(int i=index;i>=0;i--)
        {
            NPC n=null;
            try {
                n = this.npcs.get(i);
            } catch (Exception e) {
                // TODO Auto-generated catch block
                continue;
            }
            if(n.getName().equals(name))
            {

                npc = n;
                break;
            }
        }

        return npc;
    }
    public Equip getHJ()
    {
        Equip Zb = null;
        for(int i=0;i<this.equips.size();i++)
        {
            Equip e = this.equips.get(i);
            if(e.getCategory()==10)
            {
                Zb = e;
                break;
            }
        }

        return Zb;
    }
    public Equip getBY()
    {
        Equip Zb = null;
        for(int i=0;i<this.equips.size();i++)
        {
            Equip e = this.equips.get(i);
            if(e.getCategory()==11)
            {
                Zb = e;
                break;
            }
        }

        return Zb;
    }
    public Equip getTB()
    {
        Equip Zb = null;
        for(int i=0;i<this.equips.size();i++)
        {
            Equip e = this.equips.get(i);
            if(e.getCategory()==12)
            {
                Zb = e;
                break;
            }
        }

        return Zb;
    }
    public String getDescribe() {
        return describe;
    }
    public void setDescribe(String describe) {
        this.describe = describe;
    }
    public String getMapName() {
        return MapName;
    }
    public void setMapName(String mapName) {
        MapName = mapName;
    }
    public int[] getDirection() {
        return direction;
    }
    public void setDirection(int[] direction) {
        this.direction = direction;
    }
    public Vector<NPC> getNpcs() {
        return npcs;
    }
    public void setNpcs(Vector<NPC> npcs) {
        this.npcs = npcs;
    }
    public Vector<Equip> getEquips() {
        return equips;
    }
    public void setEquips(Vector<Equip> equips) {
        this.equips = equips;
    }
    public void run()
    {
        try {
            Thread.sleep(2*60000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        while(true)
        {
//            System.out.println(this.equips.size());
            if(this.equips.size()==0)
            {
                try {
                    Thread.sleep(2*60000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }else
            {
                for(int i=0;i<this.equips.size();i++)
                {
                    Equip ee = this.equips.get(i);

//                    System.out.println(System.currentTimeMillis() - ee.getDQTime());

                    if(System.currentTimeMillis() - ee.getDQTime()>=4*60000)
                    {
                        //System.out.println(System.currentTimeMillis() - ee.getDQTime());
                        this.equips.remove(ee);
                    }
                }
                try {
                    Thread.sleep(2*60000);
                } catch (InterruptedException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}
